package Excel.ExcelToLead;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class ExcelTest2 {
    //创建文件输入流
    private BufferedReader reader = null;
    //文件类型
    private String fileType;
    // 文件二进制输入流
    private InputStream is = null;
    // 当前的Sheet（当前的目录）
    private int currSheet;
    // 当前的位置
    private int currPosition;
    // Sheet数量
    private int numOfSheets;
    // 设置Workbook
    private Workbook workbook;

    public static void main(String[] args) {
        String fileSite = "D:/工作文档/地下水项目/文档/其他类型环境监测井基本情况（5.11导入版).xlsx";
        ExcelTest2 excelTest2 = new ExcelTest2();
        try {
            excelTest2.ExcelTest(fileSite);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
/*导入Excel数据时使用*/
    public void ExcelTest(String filesite) throws Exception {
        // 设置开始的表为0
        currSheet = 0;
        // 设置开始的行为0
        currPosition = 4;

        // 获取当前文件的类型
        fileType = filesite.substring(filesite.lastIndexOf("."));
        is = new FileInputStream(new File(filesite));
        if (".xls".equals(fileType)) {
            // 2003版本以前使用的是HSSF
            this.workbook = new HSSFWorkbook(is);
        } else if (".xlsx".equals(fileType)) {
            // 2007版本以后使用的是XSSF
            this.workbook = new XSSFWorkbook(is);
        } else {
            System.out.println("当前文件类型不允许进行此操作");
            return;
        }
        //获取当前的表
        Sheet sheet = workbook.getSheetAt(currSheet);
        // 获取当前表行数
        int lastRowNum = sheet.getLastRowNum();
        for (int i = 1; i <= lastRowNum; i++) {
            // 获取sheet中的一行
            Row row = sheet.getRow(i);
            // 创建字符串缓冲区
            StringBuffer stringBuffer = new StringBuffer();
            // 获取当前的列数
            int lastCellNum = row.getLastCellNum();
            System.out.println(lastCellNum);
            Cell cell = null;
            for (int j = 0; j < lastCellNum; j++) {
                cell = row.getCell(j);
                // 判断数据是否为空，空则跳转
                if (cell == null) {
                    continue;
                }
                //转换格式
                switch (cell.getCellType()) {
                    case Cell.CELL_TYPE_STRING:
                        System.out.print(cell.getRichStringCellValue().getString());
                        break;
                    case Cell.CELL_TYPE_NUMERIC:
                        if (DateUtil.isCellDateFormatted(cell)) {
                            System.out.print(cell.getDateCellValue());
                        } else {
                            System.out.print(cell.getNumericCellValue());
                        }
                        break;
                    case Cell.CELL_TYPE_BOOLEAN:
                        System.out.print(cell.getBooleanCellValue());
                        break;
                    case Cell.CELL_TYPE_FORMULA:
                        System.out.print(cell.getCellFormula());
                        break;
                    default:
                        break;
                }
            }
        }
    }
}
